package com.program.facesigninsystem.dao;

import com.program.facesigninsystem.entity.SignInActivity;
import com.program.facesigninsystem.entity.SignInLink;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface ISignInActivityDao {

    /***
     * 发起新的签到活动
     * @param actId
     * @param title
     * @param createTime
     * @param actType
     * @param caption
     * @param cid
     * @param tid
     */
    void addNewActivity(
            @Param("actId")String actId,
            @Param("title")String title,
            @Param("createTime")String createTime,
            @Param("actType")String actType,
            @Param("caption")String caption,
            @Param("cid")String cid,
            @Param("tid")String tid
    );

    /***
     * 新增签到环节
     * @param lid
     * @param duration
     * @param startTime
     * @param endTime
     * @param status
     * @param actId
     */
    void addNewLink(
            @Param("lid")String lid,
            @Param("linkType")int linkType,
            @Param("duration")String duration,
            @Param("startTime")String startTime,
            @Param("endTime")String endTime,
            @Param("status")int status,
            @Param("actId")String actId,
            @Param("location_x")double location_x,
            @Param("location_y")double location_y,
            @Param("range")double range
    );

    /***
     * 更新签到环节状态
     * @param lid
     * @param status
     * @param startTime
     * @param endTime
     */
    void updateLinkStatus(
            @Param("lid")String lid,
            @Param("status")int status,
            @Param("startTime")String startTime,
            @Param("endTime")String endTime
    );

    /***
     * 按tid查询签到活动列表
     * @param tid
     * @return
     */
    Object[] selectActivityByTid(
            @Param("tid")String tid,
            @Param("createTime")String createTime
    );

    /***
     * 按月份筛选
     * @param tid
     * @param createTime
     * @return
     */
    List<SignInActivity> selectActivityByMonth(
            @Param("tid")String tid,
            @Param("createTime")String createTime
    );

    /***
     * 按actId查询签到环节
     * @param actId
     * @return
     */
    Object[] selectLinkByActId(
            @Param("actId")String actId
    );

    /***
     * 按actId删除签到活动
     * @param actId
     */
    void deleteActivityByID(
            @Param("actId")String actId
    );

    /***
     * 按lid返回签到活动
     * @param lid
     * @return
     */
    SignInActivity selectAct(@Param("lid")String lid);

    /****
     * 查找签到环节 by lid
     * @param lid
     * @return
     */
    SignInLink selectLinkByLid(@Param("lid")String lid);

    /****
     * 查询签到活动(分页、有序)
     * @param tid
     * @return
     */
    List<Map<String,Object>> selectList(@Param("tid")String tid);

    /***
     * 查询签到环节(分页、有序)
     * @param actId
     * @return
     */
    List<SignInLink> selectLinkList(
            @Param("actid")String actId
    );
}
